﻿(function($) {
	$.learuntab = {
		requestFullScreen: function() {
			var de = document.documentElement;
			if(de.requestFullscreen) {
				de.requestFullscreen();
			} else if(de.mozRequestFullScreen) {
				de.mozRequestFullScreen();
			} else if(de.webkitRequestFullScreen) {
				de.webkitRequestFullScreen();
			}
		},
		exitFullscreen: function() {
			var de = document;
			if(de.exitFullscreen) {
				de.exitFullscreen();
			} else if(de.mozCancelFullScreen) {
				de.mozCancelFullScreen();
			} else if(de.webkitCancelFullScreen) {
				de.webkitCancelFullScreen();
			}
		},
		refreshTab: function() {
			var currentId = $('.page-tabs-content').find('.active').attr('data-id');
			var target = $('.LRADMS_iframe[data-id="' + currentId + '"]');
			var url = target.attr('src');
			//$.loading(true);
			target.attr('src', url).load(function() {
				//$.loading(false);
			});
		},
		activeTab: function() {
			var currentId = $(this).data('id');
			if(!$(this).hasClass('active')) {
				$('.mainContent .LRADMS_iframe').each(function() {
					if($(this).data('id') == currentId) {
						$(this).show().siblings('.LRADMS_iframe').hide();
						return false;
					}
				});
				$(this).addClass('active').siblings('.menuTab').removeClass('active');
				$.learuntab.scrollToTab(this);
			}
		},
		closeOtherTabs: function() {
			$('.page-tabs-content').children("[data-id]").find('.fa-remove').parents('a').not(".active").each(function() {
				$('.LRADMS_iframe[data-id="' + $(this).data('id') + '"]').remove();
				$(this).remove();
			});
			$('.page-tabs-content').css("margin-left", "0");
		},
		closeTab: function() {
			var closeTabId = $(this).parents('.menuTab').data('id');
			var currentWidth = $(this).parents('.menuTab').width();
			if($(this).parents('.menuTab').hasClass('active')) {
				if($(this).parents('.menuTab').next('.menuTab').size()) {
					var activeId = $(this).parents('.menuTab').next('.menuTab:eq(0)').data('id');
					$(this).parents('.menuTab').next('.menuTab:eq(0)').addClass('active');

					$('.mainContent .LRADMS_iframe').each(function() {
						if($(this).data('id') == activeId) {
							$(this).show().siblings('.LRADMS_iframe').hide();
							return false;
						}
					});
					var marginLeftVal = parseInt($('.page-tabs-content').css('margin-left'));
					if(marginLeftVal < 0) {
						$('.page-tabs-content').animate({
							marginLeft: (marginLeftVal + currentWidth) + 'px'
						}, "fast");
					}
					$(this).parents('.menuTab').remove();
					$('.mainContent .LRADMS_iframe').each(function() {
						if($(this).data('id') == closeTabId) {
							$(this).remove();
							return false;
						}
					});
				}
				if($(this).parents('.menuTab').prev('.menuTab').size()) {
					var activeId = $(this).parents('.menuTab').prev('.menuTab:last').data('id');
					$(this).parents('.menuTab').prev('.menuTab:last').addClass('active');
					$('.mainContent .LRADMS_iframe').each(function() {
						if($(this).data('id') == activeId) {
							$(this).show().siblings('.LRADMS_iframe').hide();
							return false;
						}
					});
					$(this).parents('.menuTab').remove();
					$('.mainContent .LRADMS_iframe').each(function() {
						if($(this).data('id') == closeTabId) {
							$(this).remove();
							return false;
						}
					});
				}
			} else {
				$(this).parents('.menuTab').remove();
				$('.mainContent .LRADMS_iframe').each(function() {
					if($(this).data('id') == closeTabId) {
						$(this).remove();
						return false;
					}
				});
				$.learuntab.scrollToTab($('.menuTab.active'));
			}
			return false;
		},
		addTab: function() {
			$(".navbar-custom-menu>ul>li.open").removeClass("open");
			var dataId = $(this).attr('data-id');
			if(dataId != "") {
				//top.$.cookie('nfine_currentmoduleid', dataId, { path: "/" });
			}
			var dataUrl = $(this).attr('href');
			var menuName = $.trim($(this).text());
			var flag = true;
			if(dataUrl == undefined || $.trim(dataUrl).length == 0) {
				return false;
			}
			$('.menuTab').each(function() {
				if($(this).data('id') == dataUrl) {
					if(!$(this).hasClass('active')) {
						$(this).addClass('active').siblings('.menuTab').removeClass('active');
						$.learuntab.scrollToTab(this);
						$('.mainContent .LRADMS_iframe').each(function() {
							if($(this).data('id') == dataUrl) {
								$(this).show().siblings('.LRADMS_iframe').hide();
								return false;
							}
						});
					}
					flag = false;
					return false;
				}
			});
			if(flag) {
				var str = '<a href="javascript:;" class="active menuTab" data-id="' + dataUrl + '">' + menuName + ' <i class="fa fa-remove"></i></a>';
				$('.menuTab').removeClass('active');
				var str1 = '<iframe class="LRADMS_iframe" id="iframe' + dataId + '" name="iframe' + dataId + '"  width="100%" height="100%" src="' + dataUrl + '" frameborder="0" data-id="' + dataUrl + '" seamless></iframe>';
				$('.mainContent').find('iframe.LRADMS_iframe').hide();
				$('.mainContent').append(str1);
				//$.loading(true);
				$('.mainContent iframe:visible').load(function() {
					//$.loading(false);
				});
				$('.menuTabs .page-tabs-content').append(str);
				$.learuntab.scrollToTab($('.menuTab.active'));
			}
			return false;
		},
		scrollTabRight: function() {
			var marginLeftVal = Math.abs(parseInt($('.page-tabs-content').css('margin-left')));
			var tabOuterWidth = $.learuntab.calSumWidth($(".content-tabs").children().not(".menuTabs"));
			var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;
			var scrollVal = 0;
			if($(".page-tabs-content").width() < visibleWidth) {
				return false;
			} else {
				var tabElement = $(".menuTab:first");
				var offsetVal = 0;
				while((offsetVal + $(tabElement).outerWidth(true)) <= marginLeftVal) {
					offsetVal += $(tabElement).outerWidth(true);
					tabElement = $(tabElement).next();
				}
				offsetVal = 0;
				while((offsetVal + $(tabElement).outerWidth(true)) < (visibleWidth) && tabElement.length > 0) {
					offsetVal += $(tabElement).outerWidth(true);
					tabElement = $(tabElement).next();
				}
				scrollVal = $.learuntab.calSumWidth($(tabElement).prevAll());
				if(scrollVal > 0) {
					$('.page-tabs-content').animate({
						marginLeft: 0 - scrollVal + 'px'
					}, "fast");
				}
			}
		},
		scrollTabLeft: function() {
			var marginLeftVal = Math.abs(parseInt($('.page-tabs-content').css('margin-left')));
			var tabOuterWidth = $.learuntab.calSumWidth($(".content-tabs").children().not(".menuTabs"));
			var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;
			var scrollVal = 0;
			if($(".page-tabs-content").width() < visibleWidth) {
				return false;
			} else {
				var tabElement = $(".menuTab:first");
				var offsetVal = 0;
				while((offsetVal + $(tabElement).outerWidth(true)) <= marginLeftVal) {
					offsetVal += $(tabElement).outerWidth(true);
					tabElement = $(tabElement).next();
				}
				offsetVal = 0;
				if($.learuntab.calSumWidth($(tabElement).prevAll()) > visibleWidth) {
					while((offsetVal + $(tabElement).outerWidth(true)) < (visibleWidth) && tabElement.length > 0) {
						offsetVal += $(tabElement).outerWidth(true);
						tabElement = $(tabElement).prev();
					}
					scrollVal = $.learuntab.calSumWidth($(tabElement).prevAll());
				}
			}
			$('.page-tabs-content').animate({
				marginLeft: 0 - scrollVal + 'px'
			}, "fast");
		},
		scrollToTab: function(element) {
			var marginLeftVal = $.learuntab.calSumWidth($(element).prevAll()),
				marginRightVal = $.learuntab.calSumWidth($(element).nextAll());
			var tabOuterWidth = $.learuntab.calSumWidth($(".content-tabs").children().not(".menuTabs"));
			var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;
			var scrollVal = 0;
			if($(".page-tabs-content").outerWidth() < visibleWidth) {
				scrollVal = 0;
			} else if(marginRightVal <= (visibleWidth - $(element).outerWidth(true) - $(element).next().outerWidth(true))) {
				if((visibleWidth - $(element).next().outerWidth(true)) > marginRightVal) {
					scrollVal = marginLeftVal;
					var tabElement = element;
					while((scrollVal - $(tabElement).outerWidth()) > ($(".page-tabs-content").outerWidth() - visibleWidth)) {
						scrollVal -= $(tabElement).prev().outerWidth();
						tabElement = $(tabElement).prev();
					}
				}
			} else if(marginLeftVal > (visibleWidth - $(element).outerWidth(true) - $(element).prev().outerWidth(true))) {
				scrollVal = marginLeftVal - $(element).prev().outerWidth(true);
			}
			$('.page-tabs-content').animate({
				marginLeft: 0 - scrollVal + 'px'
			}, "fast");
		},
		calSumWidth: function(element) {
			var width = 0;
			$(element).each(function() {
				width += $(this).outerWidth(true);
			});
			return width;
		},
		init: function() {
			$('.menuItem').on('click', $.learuntab.addTab);
			$('.menuTabs').on('click', '.menuTab i', $.learuntab.closeTab);
			$('.menuTabs').on('click', '.menuTab', $.learuntab.activeTab);
			$('.tabLeft').on('click', $.learuntab.scrollTabLeft);
			$('.tabRight').on('click', $.learuntab.scrollTabRight);
			$('.tabReload').on('click', $.learuntab.refreshTab);
			$('.tabCloseCurrent').on('click', function() {
				$('.page-tabs-content').find('.active i').trigger("click");
			});
			$('.tabCloseAll').on('click', function() {
				$('.page-tabs-content').children("[data-id]").find('.fa-remove').each(function() {
					$('.LRADMS_iframe[data-id="' + $(this).data('id') + '"]').remove();
					$(this).parents('a').remove();
				});
				$('.page-tabs-content').children("[data-id]:first").each(function() {
					$('.LRADMS_iframe[data-id="' + $(this).data('id') + '"]').show();
					$(this).addClass("active");
				});
				$('.page-tabs-content').css("margin-left", "0");
			});
			$('.tabCloseOther').on('click', $.learuntab.closeOtherTabs);
			$('.fullscreen').on('click', function() {
				if(!$(this).attr('fullscreen')) {
					$(this).attr('fullscreen', 'true');
					$.learuntab.requestFullScreen();
				} else {
					$(this).removeAttr('fullscreen')
					$.learuntab.exitFullscreen();
				}
			});
		}
	};
	$.learunindex = {
		load: function() {
			$("body").removeClass("hold-transition")
			$("#page-wrapper").find('.mainContent').height($(window).height() - 100);
			$(window).resize(function(e) {
				$("#page-wrapper").find('.mainContent').height($(window).height() - 100);
			});
			$(".sidebar-toggle").click(function() {
				if(!$("body").hasClass("sidebar-collapse")) {
					$("body").addClass("sidebar-collapse");
				} else {
					$("body").removeClass("sidebar-collapse");
				}
			})
			$(window).load(function() {
				window.setTimeout(function() {
					$('#ajax-loader').fadeOut();
				}, 300);
			});
		},
		jsonWhere: function(data, action) {
			if(action == null) return;
			var reval = new Array();
			$(data).each(function(i, v) {
				if(action(v)) {
					reval.push(v);
				}
			})
			return reval;
		},
	};
	$(function() {
		$.learunindex.load();
		$.learuntab.init();
	});
})(jQuery);